home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs54.d81 / sgtool12.arc / SGCTOOLS.DOC < prev    next >
Text File  |  1993-08-10  |  9KB  |  233 lines

  1. ___________________________________________________________________
  2.  
  3.                          SG C Tools 1.2
  4.                     (C) 1993 Steve Goldsmith
  5.                        All Rights Reserved
  6. ___________________________________________________________________
  7.  
  8.  
  9. NOTICE
  10.  
  11. THIS IS NOT FREE SOFTWARE!  If you paid a public domain vendor or
  12. communications service for this product, you paid for the service
  13. of copying or transferring the product, and not for the product
  14. itself.  I guarantee you that nothing ever gets to the originator
  15. of this product from such a sale.  You may evaluate this product,
  16. but if you make use of it, you must register your copy.
  17.  
  18. I offer several incentives for you to register.  First of all,
  19. you receive the most up-to-date copy that I have which is updated
  20. on a regular basis.  Unregistered releases do not include Assembler
  21. source files or bonus modules and programs.  Support via GEnie,
  22. Internet (via GEnie), US Mail or phone from the author.
  23.  
  24.  
  25. REGISTRATION INFORMATION
  26.  
  27. The non-commercial registration fee for SG C Tools 1.2 is $10.00
  28. plus $3.00 for shipping in US funds.
  29.  
  30. Send a check or money order for the appropriate amount to:
  31.  
  32. Steve Goldsmith
  33. 2805 Jamaica Street
  34. Sarasota, FL 34231
  35.  
  36. Please indicate what product you are ordering and if you have a
  37. requirement for 3.5" media.  I normally ship 5.25" Commodore GCR
  38. format diskettes, but will furnish 3.5" media upon request.
  39. Customers outside of the United States and Canada should include an
  40. extra $5.00 for airmail.
  41.  
  42. If you are a registered user of this product and desire an update,
  43. please contact me for upgrade prices.
  44.  
  45.  
  46. DISTRIBUTION NOTICE
  47.  
  48. This is "user-supported" software.  You are hereby granted a
  49. license by Steve Goldsmith to distribute this evaluation copy of SG
  50. C Tools and its documentation, subject to the following conditions:
  51.  
  52. 1.   SG C Tools may be distributed freely without charge in
  53.      evaluation form only.
  54.  
  55. 2.   SG C Tools may not be sold, licensed, or a fee charged for its
  56.      use.  If a fee is charged in connection with SG C Tools, it
  57.      must cover the cost of copying or dissemination only.  Such
  58.      charges must be clearly identified as such by the originating
  59.      party.  Under no circumstances may the purchaser be given the
  60.      impression that he is buying SG C Tools itself.
  61.  
  62. 3.   SG C Tools must be presented as a complete unit, including
  63.      this documentation.   Neither SG C Tools nor its documentation
  64.      may be amended or altered in any way.
  65.  
  66. 4.   By granting you the right to distribute the evaluation form of
  67.      SG C Tools, you do not become the owner of SG C Tools in any
  68.      form.  Any other use, distribution or representation of SG C
  69.      Tools is expressly forbidden without the written consent of
  70.      Steve Goldsmith.
  71.  
  72. Commodore 128 is a trademark of Commodore Business Machines.  CP/M
  73. and CP/M 3.0 are trademarks of Digital Research.  MS-DOS is a
  74. trademark of Microsoft.  IBM PC,  PC-XT and PC-AT are trademarks
  75. of International Business Machines.
  76.  
  77.  
  78. OVERVIEW
  79.  
  80. SG C Tools provides a set of high level ANSI C modules to unlock
  81. the power of the C128 running CP/M.  With a little modification it
  82. should compile with a native mode ANSI C compiler too!  All
  83. functions are included in a library to make compiling your programs
  84. fast and easy.  Example programs are included to get you started!
  85.  
  86.  
  87. REQUIREMENTS
  88.  
  89. *    A C128 or C128D running CP/M 3.0 or a IBM PC running a CP/M
  90.      emulator and DOS to CP/M file transfer software.
  91.  
  92. *    At least one 1581, two 1571s, large RAM disk or hard drive to
  93.      compile on a C128.
  94.  
  95. *    80 column monitor for VDC specific routines.
  96.  
  97. *    ANSI C programming experience
  98.  
  99.  
  100. VERSION INFORMATION
  101.  
  102. 1.0
  103.  
  104. First version came with basic VDC I/O, fills, copies, fast string
  105. writes and basic screen controls.
  106.  
  107. 1.1
  108.  
  109. Added up and down scrolls of any region, fast pop up windows and
  110. buffered VDC I/O.  All VDC functions are now in a library called
  111. LIBC128.LIB.  Use C FILENAME.C -LC128 to compile instead of C
  112. FILENAME.C VDC.OBJ.  Low level VDC I/O functions invdc() and
  113. outvdc() are now in a external Assembler file VDCIO.AS.  This
  114. increased the over all speed a great deal!
  115.  
  116. I used Simeon Cran's MYZ80 Z80 emulator running ZP/M 3 under
  117. Windows 3.1 to compile this version.  Sydex's 22DISK was used to
  118. transfer files from DOS to a Epson QX-10 format disk.  This allowed
  119. me to run code on a C128 without having to run a C128 native mode
  120. file transfer program like BBR.  You could also use a C128 CP/M
  121. program that reads DOS disks for about the same result.
  122.  
  123. 1.2
  124.  
  125. The modules in LIBC128.LIB are broken down to their smallest
  126. components to make sure that no dead code is linked in.  Some
  127. modules still have more than one function if there are
  128. dependencies. 
  129.  
  130. Added VDC registers 20 and 21 missing from 1.1 savevdc(). 
  131. restorevdc() didn't restore these registers, so if you modified
  132. them in a program they were not restored.  Also, savevdc() no
  133. longer initializes the global 'vdc' variables.  You have to call
  134. mapvdc() whenever you want to initialize them to the current VDC
  135. configuration.
  136.  
  137. mapvdc() sets vdcCharMem incorrectly for values other then 2000h,
  138. 6000h, A000h and E000h.  See CHSET.C for an example of this
  139. problem.  In the next release I may remove the code that sets
  140. vdcCharMem and have the main programs set it manually.  If you can
  141. figure out why VDC register 28 acts this way let me know!
  142.  
  143. Added functions to set VDC to 64K mode, turn attributes on/off, set
  144. 80 X 50 interlaced text mode, set bit map mode, set pixels, draw
  145. lines, draw circle and print strings in bit map mode!  See
  146. VDCDEMO.C for an example of using the new functions.  circlevdc()
  147. doesn't draw true circles due to the aspect ratio of 640 X 200 bit
  148. map mode.  I did some correction by reducing Y axis plots by 50%. 
  149. A general ellipse algorithm would be better.  It involves a new
  150. formula in terms of the P parameter (see VDCCIR.C).  If you come up
  151. with one I'll give you a free registered copy!  I really need to
  152. get some graphics books instead of hacking this stuff!
  153.  
  154.  
  155. COMPILING SOURCE CODE WITH HI-TECH C 3.09
  156.  
  157. First you will need to have a copy of HI-TECH C 3.09 (CP/M-80). 
  158. You can download the following Freeware files from GEnie's CP/M RT
  159. (M685;3) or other source:
  160.  
  161.  8149 LIBSRC.LZH               X BRIAN-CPM    930616   80384     39 
  162.  3
  163.       Desc: Source Code to Hitech C library
  164.  8148 Z80V309.LZH              X BRIAN-CPM    930616  194304     51 
  165.  3
  166.       Desc: Hitech C Compiler for CP/M
  167.  8147 Z80DOC.LZH               X BRIAN-CPM    930616   89088     55 
  168.  3
  169.       Desc: Documentation for Hitech C compiler
  170.  
  171. You should look over HI-TECH C's manual and compile a simple "hello
  172. world" program before proceeding.  I installed all the compiler
  173. related files on my 1581.  My source and header files are on a
  174. 1571.  You could get away with two 1571s, but a RAM disk or hard
  175. drive would be better.  You could also use a CP/M-80 emulator on
  176. the IBM PC and copy compiled files to C128 for testing.
  177.  
  178. To compile sample programs use:
  179.  
  180. C -O -X FILENAME.C -LC128
  181.  
  182.  
  183. PROGRAMMING CONSIDERATIONS
  184.  
  185. SG C Tools is getting complex enough to explain a few things.  The
  186. VDC should be configured to its default CP/M 3.0 settings at the
  187. start and end of each program.
  188.  
  189. Display memory        0000h
  190. Attribute memory      0800h
  191. Character definitions 2000h
  192.  
  193. This includes restoring character definitions if you use memory at
  194. 2000h for something else like a bit map.  Setting the VDC to 64K
  195. mode wipes out memory used in 16K mode, so be sure to save the
  196. character definitions to a memory buffer or file before using 64K
  197. mode.  The VDC remains in 64K mode until you do a cold boot or warm
  198. boot with the C128's reset button.
  199.  
  200. Most of the VDC functions do not check parameters for range
  201. violations.  Range checking should be preformed at the application
  202. level.  There are times when you may want to write to a off screen
  203. memory location.  For this reason there is no need to waste time
  204. and code doing range checks.  Just be aware of the implications. 
  205. A renegade program may accidentally wipe out character definitions
  206. or other important memory regions forcing you to reboot.
  207.  
  208. Basically, just return to CP/M the way it was before your program
  209. ran.  See VDCDEMO.C for a complete example of setting various VDC
  210. modes and exiting back to CP/M correctly.
  211.  
  212. The source for LIBC128.LIB is provided in LIBC128.ARC.  Z80
  213. Assembler source is not provided with unregistered copies.  Only
  214. .OBJ files are provided.  I have included the C equivalents of the
  215. functions though.  Try replacing the Assembler .OBJs with their C
  216. counterparts and you will see why it is worth it to register!  For
  217. example, using VDCIO.C and VDCBMPIX.C in VDCDEMO.C caused the line
  218. example to take 26 seconds compared to 8 seconds with Assembler! 
  219. At least I was nice enough to include the fast .OBJs for you to
  220. use!
  221.  
  222.  
  223. HOW TO CONTACT ME
  224.  
  225. Please report any support questions, problems, suggestions, etc. to
  226. me via GEnie S.GOLDSMITH2, Internet S.GOLDSMITH2@GENIE.GEIS.COM,
  227. voice phone (813) 925-1064 or US Mail to:
  228.  
  229. Steve Goldsmith
  230. 2805 Jamaica Street
  231. Sarasota, FL 34231
  232. USA
  233.